package com.demo.java.OD251_300.OD292;

import java.util.Scanner;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【网上商城优惠活动】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/146081705
 */
public class OdMain {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int[] tickets = new int[3];  // 保存三种优惠券的数量
        for (int i = 0; i < 3; i++) {
            tickets[i] = scanner.nextInt();  // 输入每种优惠券的数量
        }
        int n = scanner.nextInt();  // 输入顾客人数
        int[] amounts = new int[n];  // 保存每个顾客的购买金额
        for (int i = 0; i < n; i++) {
            amounts[i] = scanner.nextInt();  // 输入每个顾客的购买金额
        }
        solveMethod(tickets, amounts);  // 调用计算最优支付金额的方法
    }

    public static void solveMethod(int[] tickets, int[] amounts) {
        int t1 = tickets[0], t2 = tickets[1], t3 = tickets[2];  // 分别表示满减券、折扣券和定额券的数量
        for (int amount : amounts) {
            // 每次处理一个顾客的金额
            int[] res1 = useT1(t1, new int[]{amount, 0});
            int[] res2 = useT2(t2, new int[]{amount, 0});
            int[] res3 = useT3(t3, new int[]{amount, 0});
            int[] result = new int[]{Integer.MAX_VALUE, Integer.MAX_VALUE};  // 初始化结果为最大值

            if (amount < 100) {  // 小于100元的金额，使用定额券或折扣券
                if (amount <= 62 && t3 > 0) {
                    result = useT2(t2, res3);  // 如果折扣券适用且定额券数量大于0，选择折扣券
                } else {
                    result = useT3(t3, res2);  // 否则选择定额券
                }
                System.out.println(result[0] + " " + result[1]);  // 输出顾客的最终支付金额和使用的优惠券数量
                continue;
            }

            if (res1[0] < res2[0]) {  // 满减券适用时
                int[] copyRes = res1.clone();  // 克隆原始结果，避免影响后续计算
                int[] r3 = useT3(t3, res1);  // 尝试使用定额券
                int[] r2 = useT2(t2, copyRes);  // 尝试使用折扣券
                result = r3[0] < r2[0] ? r3 : r2;  // 选择最优的优惠券组合
            } else {  // 折扣券适用时
                int[] copyRes = res2.clone();  // 克隆原始结果
                int[] r3 = useT3(t3, res2);  // 尝试使用定额券
                int[] r1 = useT1(t1, copyRes);  // 尝试使用满减券
                result = r3[0] < r1[0] ? r3 : r1;  // 选择最优的优惠券组合
            }

            System.out.println(result[0] + " " + result[1]);  // 输出最终结果
        }
    }

    // 使用满减券
    public static int[] useT1(int ticket, int[] res) {
        int tmp = res[0];
        while (tmp >= 100 && ticket > 0) {
            res[0] -= 10;  // 每使用一次满减券，减去10元
            ticket--;  // 减少满减券的数量
            res[1]++;  // 增加已使用的优惠券数量
            tmp -= 100;  // 继续使用直到金额不足100元
        }
        return res;
    }

    // 使用折扣券
    public static int[] useT2(int ticket, int[] res) {
        if (ticket > 0) {
            res[0] = (int) (res[0] * 0.92);  // 使用折扣券，金额减去8%
            res[1]++;  // 增加已使用的优惠券数量
        }
        return res;
    }

    // 使用定额券
    public static int[] useT3(int ticket, int[] res) {
        while (res[0] >= 5 && ticket > 0) {
            res[0] -= 5;  // 每使用一次定额券，减去5元
            res[1]++;  // 增加已使用的优惠券数量
            ticket--;  // 减少定额券的数量
        }
        return res;
    }
}